Telegram Group »
Singapore »
Библиотека мобильного разработчика | Android iOS Swift Retrofit Moshi Chuck » Telegram Webview
В этом споре активно участвуют как простые пользователи, так и профессиональные разработчики. Если для первых дело скорее в привычках, удобстве и личных предпочтениях, то вторые приводят серьёзные аргументы в пользу любимых интернет-обозревателей.
Каждый браузер имеет свои козыри: Chrome — бешеную популярность и интеграцию с Google-сервисами, Firefox — открытый исходный код и приватность, Opera — встроенные фишки для разработчиков.
А где же истина? Какой браузер предпочитаете вы? Голосуйте и пишите своё мнение в комментариях
❤️ — Chrome
👍 — FireFox
👏 — Opera
🌚 — другие
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
Рассмотрим этот фрагмент кода, который пытается получить цвет темы из локального хранилища устройства iOS:
var color = UserDefaults.standard.string(forKey: "themeColor")!
print(color)
Ответ:
Первая строка извлекает цвет темы из user defaults. Этот метод, однако, возвращает optional (поскольку themeColor может быть не определен). Если ключ не найден, возвращается nil, что приводит к крашу:
fatal error: unexpectedly found nil while unwrapping an Optional value
Это происходит потому, что в первой строке используется ! для force unwrap optional, которое теперь nil. Force unwrapping должно использоваться только тогда, когда вы на 100% уверены, что значение не nil.
Чтобы исправить это, вы можете использовать optional binding для проверки, найдено ли значение для ключа:
if let color = defaults.stringForKey("themeColor") { print(color)}
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
Java / Kotlin разработчик (Software Engineer) — до 450 000 ₽, гибрид (Москва)
Junior iOS developer/Младший iOS разработчик — до 150 000 ₽, гибрид (Москва)
iOS разработчик — до 450 000 ₽, гибрид (Москва, Санкт-Петербург)
Android-разработчик — от 150 000 ₽, офис (Москва, Санкт-Петербург)
Android Developer — от 4 500 до 5 500 €, удалёнка
#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
1. Получение типа класса через функцию
::class
Функция
::class
возвращает объект KClass
, который содержит информацию о типе класса во время выполнения.class Person(val name: String, val age: Int)
fun main() {
val person = Person("John", 30)
println(person::class) // выводит "class Person"
}
2. Получение типа класса через функцию
javaClass
Функция
javaClass
возвращает объект Class
, который содержит информацию о типе класса во время выполнения.class Person(val name: String, val age: Int)
fun main() {
val person = Person("John", 30)
println(person.javaClass) // выводит "class Person"
}
3. Получение типа класса через функцию
::class.java
Вызов функции
::class.java
на объекте типа KClass
возвращает объект Class
, который содержит информацию о типе класса во время выполнения.class Person(val name: String, val age: Int)
fun main() {
val person = Person("John", 30)
println(person::class.java) // выводит "class Person"
}
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Kotlin давно перерос статус языка «только для Android». Благодаря технологии Kotlin Multiplatform (KMP), он позволяет создавать приложения, которые работают на JVM, iOS, macOS, вебе и других платформах, сохраняя единый код бизнес-логики.
В статье — без лишнего пафоса о том, как устроена архитектура KMP, чем она отличается от Flutter и React Native, как работает сборка, где границы общего и платформенного кода и почему это решение подходит командам, стремящимся к эффективности без компромиссов.
#cвежак
Please open Telegram to view this post
VIEW IN TELEGRAM
Проблема: Долгая загрузка данных, лишние запросы и падение приложения при плохом интернете.
Используйте
Room
(Android) или CoreData
(iOS) для локального хранения:// Android + Kotlin
@Dao
interface UserDao {
@Query("SELECT * FROM users")
fun getUsers(): Flow<List<User>>
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun saveUsers(users: List<User>)
}
// iOS + Swift
func saveUsers(_ users: [User]) {
let context = persistentContainer.viewContext
users.forEach { user in
let entity = UserEntity(context: context)
entity.id = user.id
entity.name = user.name
}
try? context.save()
}
Делите данные на страницы:
// iOS
func fetchWithRetry(maxAttempts: Int = 3) async throws -> Data {
for attempt in 1...maxAttempts {
do {
return try await fetchData()
} catch {
if attempt == maxAttempts { throw error }
try await Task.sleep(nanoseconds: 1_000_000_000 * UInt64(attempt))
}
}
fatalError("Unreachable")
}
// Android + OkHttp
val client = OkHttpClient.Builder()
.cache(Cache(cacheDir, 10 * 1024 * 1024)) // 10 MB
.build()
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Запутались в настройке Firebase для Android/iOS? Используйте этот промпт, чтобы быстро разобраться с типовыми задачами и избежать распространённых ошибок:
Provide a step-by-step guide for setting up Firebase in a mobile
1. Initial setup for Android/iOS
2. Typical configuration mistakes and how to avoid them
3. Best practices for structuring Firestore/Firebase Auth
4. Performance optimization tips
–
Suggest solutions for common Firebase authentication errors
(если столкнулись с проблемами логина)–
Compare Realtime Database vs Firestore for a chat app
(если выбираете базу данных)–
Provide code samples for offline mode implementation
(для работы без интернета)Добавьте
Explain like I'm a junior developer
, если нужно максимально простое объяснение.А как вы настраиваете Firebase? Делитесь лайфхаками в комментариях
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Каждый разработчик мечтает попасть в топовую компанию или работать над крутым проектом. Но как пройти этот путь от первых строчек кода до оффера мечты?
Расскажите свою историю в комментариях:
– О какой работе вы мечтали?
– Как готовились к собеседованиям?
– С какими трудностями столкнулись?
– Что в итоге помогло получить оффер?
А вот вдохновляющая история от нашего подписчика:
Я годами хотел попасть в команду мобильной разработки крупного fintech-стартапа. После сотни прочитанных статей и десятка пет-проектов я наконец получил собеседование. На техническом этапе я запаниковал и забыл, как работает LiveData в Android. Но честно признался: «Сейчас не помню, но я разберусь и пришлю ответ позже». Каково же было удивление, когда мне сказали, что честность и желание учиться — именно то, что они искали! Теперь я тут работаю.
Ваш опыт важен — делитесь историями и вдохновляйте других
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
Если вы начинали автоматизировать UI-тесты под iOS, то наверняка заметили, что информации по фреймворку XCUITest в сети не так много, особенно на русском языке.
Эта статья — краткое руководство по основам автоматизации на XCUITest. Здесь автор постарался собрать ключевые моменты, которые помогут вам сделать первые шаги в тестировании iOS-приложений.
#cвежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🚨 Смешные новости про IT теперь в одном канале
Мы запустили @hahacker_news — наш новый юмористический IT-канал.
Туда будем постить лучшие шутки до 19го мая, которые вы присылали на конкурс.
👉 @hahacker_news — голосование уже идёт, переходите, читайте, угарайте и оставляйте реакции
Мы запустили @hahacker_news — наш новый юмористический IT-канал.
Туда будем постить лучшие шутки до 19го мая, которые вы присылали на конкурс.
👉 @hahacker_news — голосование уже идёт, переходите, читайте, угарайте и оставляйте реакции
В карточках рассказали о действиях, которые мешают найти работу в ИТ, особенно в начале карьеры.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM